As an ever increasing number of applications and services are being made available over networks such as the Internet, a number of content, application, and/or service providers are turning to technologies such as remote resource sharing and cloud computing. Cloud computing is a general term often used to describe the process of providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is made to be dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources. A service provider that owns those resources will usually take on the responsibility of maintaining and managing the resources, ensuring that they are highly available, scalable and otherwise ready to provide the necessary services.
In such cloud environments, multiple users often share resources such as remote server and storage devices. For example, an application owner may wish to deploy its application onto the resources of the service provider and enable the masses of end users to concurrently send multiple requests to be executed against the resources. Problems can arise, however, if the resources of the service provider are not particularly well suited to handle the specific needs of the application or services. For example, some applications may be very graphic-intensive, while other applications may utilize a lot of open network connections. As such, each of the various applications may call for different hardware/software resources, or configurations to optimize their functionality.